#include "sort.h"

//该文件中是实现使用冒泡排序模拟qsort函数(Bubble_Sort函数)

//void qsort (void* base, //指向待排序数组的第一个元素的指针
//	size_t num, //base指向数组中的元素个数
//	size_t size, //base指向的数组中一个元素的大小，单位是字节
//	int (*compar)(const void*,const void*)); //函数指针，传递函数的地址

void Bubble_Sort(void* base, size_t num, size_t size, int (*compar)(const void*,const void*)) //冒泡排序排序整型数据
{
	int i = 0;
	for (i = 0; i < num - 1; i++) //确定趟数
	{
		int j = 0;
		for (j = 0; j < num - 1 - i; j++) //确定每趟交换的对数
		{
			if(compar(((char*)base + j * size), ((char*)base + (j + 1) * size)) > 0)
			{
				//交换函数
				Swap(((char*)base + j * size), ((char*)base + (j + 1) * size), size);
			}
		}
	}
	return;
}

void Swap(char* a, char* b , size_t size) //冒泡排序模拟实现qsort函数中的交换函数
{
	int i = 0;
	for (i = 0; i < size; i++)
	{
		char tmp = *a;
		*a = *b;
		*b = tmp;
		a++;
		b++;
		
	}
	return;
}

